In existing networking applications, an operating system generally follows a normal protocol processing for network data packets even if the destination of these packets is an application running on the same host as that of the sending application. This processing imposes an unnecessary burden on the host in terms of protocol processing and copying of data to and from system memory. New interconnect technology, such as InfiniBand and TCP Offload Engines, has proposed various solutions for reducing data copying in memory and offloading the protocol processing to specialized hardware. However, these solutions still do not reduce or eliminate overheads due to data copying in memory and protocol processing associated with data transfers within the host itself.
For database servers and web application servers in which most of the network connections between applications are on local hosts and performance is major concern, there is even a greater need for an efficient data transfer mechanism among these applications. This is also true for two processes in the same application that communicate through a network protocol, such as TCP/IP, to reduce performance impact caused by network protocol processing.
There is thus a need for a system and method for efficiently transferring data between two applications or processes using a network protocol when the applications or processes run on the same host computer.